using System;
using System.Data;
using System.Configuration;
using Clue_Less_Shared.Enumerations;

namespace Clue_Less_Shared
{
    /// <summary>
    /// Contains 3 cards. Refered to as an "envelope" in the game.
    /// </summary>
	[Serializable]
    public class Envelope
    {
		private CharacterCard _suspectCharacter;

		public CharacterCard SuspectCharacter
        {
            get { return _suspectCharacter; }
            set { _suspectCharacter = value; }
        }
        private RoomCard _suspectRoom;

		public RoomCard SuspectRoom
        {
            get { return _suspectRoom; }
            set { _suspectRoom = value; }
        }
        private WeaponCard _suspectWeapon;

		public WeaponCard SuspectWeapon
        {
            get { return _suspectWeapon; }
            set { _suspectWeapon = value; }
        }

        public Envelope(CharacterCard character, WeaponCard weapon, RoomCard room)
        {
            _suspectCharacter = character;
            _suspectRoom = room;
            _suspectWeapon = weapon;
        }

		public Envelope()
		{
			_suspectCharacter = new CharacterCard();
			_suspectRoom = new RoomCard();
			_suspectWeapon = new WeaponCard() ;
		}
    }
    /// <summary>
    /// Inherits Envelope and adds one more field - player ID
    /// </summary>
    [Serializable]
    public class Suggestion : Envelope
    {
        private int _playerID;

        public int PlayerID
        {
            get { return _playerID; }
            set { _playerID = value; }
        }

        private string _playerName;

        public string PlayerName
        {
            get { return _playerName; }
            set { _playerName = value; }
        }

        private int _suggestionID;

        public int SuggestionID
        {
            get { return _suggestionID; }
            set { _suggestionID = value; }
        }

        private bool _isDisproved;

        public bool IsDisproved
        {
            get { return _isDisproved; }
            set { _isDisproved = value; }
        }
        private Card _disprovalCard;

        public Card DisprovalCard
        {
            get { return _disprovalCard; }
            set { _disprovalCard = value; }
        }
        private int _disproverID;

        public int DisproverID
        {
            get { return _disproverID; }
            set { _disproverID = value; }
        }

        private string _disproverName;

        public string DisproverName
        {
            get { return _disproverName; }
            set { _disproverName = value; }
        }

        public Suggestion() : base()
        {
            _playerID = -1;
        }

        public Suggestion(int suggestionID, int playerID, CharacterCard character, WeaponCard weapon, RoomCard room)
            : base(character, weapon, room)
        {
            _playerID = playerID;
            _suggestionID = suggestionID;
        }
    }
}
